#include "vdouble.h"

// Constrói um vetor com um tamanho predefinido
vdouble::vdouble(uint size)
{
    _size = size;
    _v = new double[size];
    _index = 0;
}

vdouble::~vdouble()
{
    delete[] _v;
}

// Retorna o tamanho do vetor
uint vdouble::size()
{
    return _size;
}

// Retorna o valor na posição i
double vdouble::get(uint i)
{
    assert(i < _size);
    return _v[i];
}

// Retorna o valor na posição i como um uint
uint vdouble::getuint(uint i)
{
    double d = get(i);
    return (uint) round(d);
}

// Seta o valor na posição i
void vdouble::set(uint i, double d)
{
    assert(i < _size);
    _v[i] = d;
}

// Incrementa o valor na posição i
void vdouble::inc(uint i, double d)
{
    set(i, get(i) + d);
}

// Adiciona mais um elemento no vetor
void vdouble::push_back(double d)
{
    assert(_index < _size);
    _v[_index++] = d;
}

// Verifica se está cheio
bool vdouble::is_full()
{
    return (_index == _size);
}

// Redimensiona o vetor
void vdouble::resize(uint size)
{
    delete[] _v;
    _size = size;
    _v = new double[size];
    _index = 0;
}

